package com.jch.dm.chapter_12_decorator;

/**
 * @author: Administrator
 * @create: 2020/03/31 16:47
 **/
public class FullBorder extends Border {
    public FullBorder(Display display) {
        super(display);
    }

    /**
     * 获取横向字符数
     *
     * @return 字符数
     */
    @Override
    public int getColumns() {
        return 1 + display.getColumns() + 1;
    }

    /**
     * 获取纵向字符数
     *
     * @return 字符数
     */
    @Override
    public int getRows() {
        return 1 + display.getRows() + 1;
    }

    /**
     * 获取第row行的字符串
     *
     * @param row 行数
     * @return 字符串
     */
    @Override
    public String getRowText(int row) {
        if (row == 0) {
            return "+" + makeLine('-', display.getColumns()) + "+";
        } else if (row == display.getRows() + 1) {
            return "+" + makeLine('-', display.getColumns()) + "+";
        } else {
            return "|" + display.getRowText(row - 1) + "|";
        }
    }

    /**
     * 生成一个重复columns次字符c的字符串
     * @param c 字符
     * @param columns 重复次数
     * @return 字符串
     */
    private String makeLine(char c, int columns) {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < columns; i++) {
            buf.append(c);
        }
        return buf.toString();
    }
}
